﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

struct tec
{
	char* name;//4
	int age;//4
}t;

//main124：堆内存开辟结构体空间
int main124()
{
	//1.堆内存开辟一个结构体空间，t是结构体变量，为8个字节；
	struct tec* p = (struct tec*)malloc(sizeof(t));
	p->name = (char*)malloc(sizeof(char) * 21);
	strcpy(p->name, "岳不群");
	p->age = 37;
	printf("2.使用堆内存开辟结构体，并给结构体变量赋值，输出老师姓名和年龄：%s   %d\n", p->name, p->age);//岳不群   37

	//3.必须先释放p->name，释放完后，p->name为null，才能继续释放p。否则，p为null后，p->name就是乱码了。
	/*free(p->name);
	free(p);*/
	//free(p->name);

	if (p->name)
	{
		free(p->name);
		p->name = NULL;
	}
	if (p)
	{
		free(p);
		p = NULL;
	}

	printf("4.输出结构体指针struct tec*的内存大小：%d\n", sizeof(struct tec*));//4
	system("pause");
	return EXIT_SUCCESS;
}